PostgreSQL 11 でシーケンスとそれに紐づくテーブル・カラムをまとめて一覧するクエリ
code:sql
select
col.table_name
, col.column_name
, seq.sequence_name
, col.column_default
from
information_schema.sequences as seq
inner join
information_schema.columns as col
on
col.column_default like concat('%', seq.sequence_name, '%')
;
メモ
シーケンスの一覧は information_schema.sequences テーブルからとれるが、それに紐づくテーブルとカラムの情報は含まれていない。そこで、information_schema.columns テーブルを JOIN することで無理くり紐付ける。
シーケンスが設定されている場合、このテーブルの column_default カラムには nextval('basic_images_id_seq'::regclass) のようなシーケンス名が含まれている。そこで、 information_schema.sequences テーブルを JOIN する際の条件を LIKE 句で無理くり作る。
見ての通り、ばっちいのでもっとスマートに取る方法がありそうな気もする...。
参考